/* 
泛型:
    指在定义函数、接口或类的时候，不预先指定具体的类型，而在使用的时候再指定具体类型的一种特性。

需求:
  创建一个函数, 实现功能: 根据指定的数量 count 和数据 value , 创建一个包含 count 个 value 的数组
*/
(function(){
  // 定义的时候定义泛型，泛型就是不确定的类型
  // 调用的时候确定泛型，指定泛型是什么类型
  function createArr<T>(count:number,value:T){
    let arr: T[] = []
    for(let i = 0; i < count; i++){
      arr.push(value)
    }
    return arr
  }

  createArr<number>(5,6)
  createArr<string>(5,'i')




  function swap <K, V> (a: K, b: V): [K, V] {
    return [a, b]
  }
  const result = swap<string, number>('abc', 123)
  console.log(result[0].length, result[1].toFixed())

})()
